Memory devices are commonly used in computers and other electronic devices such as phones, personal data assistants, etc, to store a variety of information including data and software programs. Generally, data and software that needs to be stored for long period of time is often stored on non-volatile memory devices such as read only memory (ROM), erasable programmable ROM (EPROM), etc. Specifically, software programs that are designed by the system manufacturer such as operating systems of computers, operating code of wireless devices, etc., are more likely to be stored on such non-volatile memory. Any information stored in non-volatile memory devices is stored on a permanent basis such that even when the device is not activated or provided with power for a long period of time, such information is still preserved. On the other hand special equipment may be required to make changes to the content of non-volatile memory devices generally.
Generally, software programs or data that is stored on non-volatile memory are likely to be of permanent nature; in practice, it is quite often necessary to make changes to such software programs or data. For example, it is possible to find a software bug or virus in a software program stored on a non-volatile memory device. In such a situation, a user of such a non-volatile device will generally have to re-write the entire program on the non-volatile memory. Making such changes to information stored on non-volatile memory devices is especially difficult when such devices are already installed on a large number of user equipments. For example, if a number of wireless phones with operating code on a ROM of such wireless phones are already used by a number of users and if a situation arises when part of such operating code needs to be changed, it will be necessary for a manufacturer of such wireless phones to recall or the phones and make changes to their operating code, or they will have to issue new wireless phones to all the users with the corrected code.